Prisma を綺麗に使いたければ MVC という発想を忘れるのが良いのでは
#Prisma
#MVC
#ORM
/fsubal/Prisma を綺麗に使いたければ MVC という発想を忘れるのが良いのでは
関連
PrismaはORMなのか?
modelという抽象ではなく参照か更新かで分けたい
koushisa.icon
データソースのアーキテクチャに関するパターン(Data Source Architectural Patterns)
で分類すると
Prismaは
ActiveRecord
ではなく
Data Mapper
戻り値は
モデル
ではなく
Entity
この
メンタルモデル
が違うので他の
ORM
に慣れている場合は
アンラーニング
が必要そう
モデリング
の考え方
ドメインモデル
というよりは、
CQS
の考え方がマッチする
モデル
の単位はテーブルではなくコマンド (=
モデル
とコマンドは1:1)
コマンドを起点に
単方向データフロー(unidirectional data flow)
を形成するイメージ
わかってないこと
パッケージング
トップレベルにmutations, queries的なのを掘った
オニオンアーキテクチャ
に近そう
Data Mapper
的な
ORM
が
RPC
や
GraphQL
と相性がいいと言われるのはこういう力学があるからか
koushisa.icon
SVO型のパッケージングで機能的凝集を目指すオニオンアーキテクチャ
これは
フロントエンド
の考え方だけど
バックエンド
でもイメージは近い
バックエンド
の場合は
HTTP
リクエストをコマンドに紐づけるルーティングがもう一つ上にあるはず
^ はコマンドから利用される内部の
モデル
のパッケージング
Domain Modeling Made Functional
の考え方が大事そう
データ構造と振る舞いを切り離す
永続化知識の分離について
ドメインモデルの内部には、永続化にまつわる情報を混入させるべきではない
永続化をエッジに押しやると、Repositoryパターンが不要になる
実践例
TypeScript による GraphQL バックエンド開発
これわかりやすいな
koushisa.icon
他
バックエンドはフレームワーク>言語